2-4 {y{

MATLAB 提供重複迴圈(Loops)及條件判斷(Conditions)等程式流程控制(Flow Control)的指令,最簡單的程式重複執行指令是 for 迴圈(For-loop),其基本使用語法為:

For 變數 = 向量 運算式; end

其中變數的值會被依次設定為向量的每一個元素值,來重複執行介於 for 和 end 之間的運算式。因此,若無意外情況,運算式執行的次數會等於向量的長度。舉例來說,下列指令會產生一個長度為 6 的調和數列(Harmonic Sequence):

>> x = zeros(1,6); % 預先配置矩陣 x 為一個維度 1×6 的零矩陣 >> for i = 1:6 >> x(i) = 1/i; >> end >> disp(x) % 顯示矩陣 x 的內容 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667

在上例中,矩陣 x 最初是一個 1×6 大小的零矩陣,在 for 迴圈中,變數 i 的值依次是 1 到 6(即矩陣 1:6 或 [1 2 3 4 5 6 ] 中的每一個元素),因此矩陣 x 的第 i 個元素的值依次被設為 1/i 。

另一個常用到的程式重複執行指令是 while 迴圈(While-loop),其基本使用語法為:

while 條件式 運算式; end

也就是說,只要條件式成立,運算式就會一再被重複執行。例如先前用 for 迴圈產生的調和數列的作法,我們可用 while 迴圈改寫如下:

>> x = zeros(1,6); % x 是一個 1×6 的零矩陣 >> i = 1; >> while i <= 6 >> x(i) = 1/i; >> i = i + 1; >> end >> disp(x) % 顯示矩陣 x 的內容 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667

Hint
上面的幾個例子中,我們使用 zeros 來預先配置(Pre-allocate)了一個適當大小的矩陣。若不預先配置矩陣,程式仍可執行,但此時 MATLAB 需要動態地增加(或減小)矩陣的大小,因而降低程式的執行效率。所以在使用一個矩陣時,若能在事前知道其大小,則最好先使用 zeros 或 ones 等指令來預先配置矩陣所需的記憶體大小,以增進程式的執行效率。

MATLAB 也提供依條件判斷來控制程式流程的指令,最常見為 if – else – end 的指令組合,其基本使用形式為:

if 條件式 運算式; else 運算式; end

範例如下:

>> if rand(1,1) > 0.5 >> disp('Given random number is greater than 0.5.'); >> else >> disp('Given random number is smaller than 0.5.'); >> end Given random number is less than 0.5.

有關程式流程控制,在本書的第十六章「程式流程控制」將會有更詳盡的介紹。


MATLAB程式設計:入門篇